#include "GeoDefination.h"

#define _USE_MATH_DEFINES
#include <math.h>
#include <QtMath>

QPoint COMFUNC_DegreeToXYIndex(double lon, double lat, int z)
{
    QPoint xyIndex;
    if(-180 > lon)
        xyIndex.setX(0);
    else if(180 < lon)
        xyIndex.setX(int(pow(2.0, z) - 1));
    else
    {
        double x = pow((float)2, z-1) * (lon / 180 + 1);
        xyIndex.setX((int)x);
    }

    if(-85.05112877980659 > lat)
        xyIndex.setY(int(pow(2.0, z) - 1));
    else if(85.05112877980659 < lat)
        xyIndex.setY(0);
    else
    {
        double y = pow((float)2, z-1) * (1 - log(tan(lat * M_PI / 180) + 1 / cos(lat * M_PI / 180)) / M_PI);
        xyIndex.setY((int)y);
    }

    return xyIndex;
}
